Custom integrated circuits are widely used in modern electronic equipment. The demand for custom integrated circuits is rapidly increasing because of the dramatic growth in the demand for highly specific consumer electronics and a trend towards increased product functionality. Also, the use of custom integrated circuits is advantageous because custom circuits reduce system complexity and, therefore, lower manufacturing costs, increase reliability and increase system performance.
There are numerous types of custom integrated circuits. One type consists of programmable logic devices (PLDs), including field programmable gate arrays (FPGAs). FPGAs are designed to be programmed by the end designer using special-purpose equipment. PLDs are, however, undesirable for many applications because they operate at relatively slow speeds, have a relatively low integration, and have relatively high cost per chip.
Another type of custom integrated circuit is an application-specific integrated circuit (ASIC). Gate-array based and cell-based ASICs are often referred to as “semi-custom” ASICs. Semi-custom ASICs are programmed by either defining the placement and interconnection of a collection of predefined logic cells which are used to create a mask for manufacturing the integrated circuit (cell-based) or defining the final metal interconnection layers to lay over a predefined pattern of transistors on the silicon (gate-array-based). Semi-custom ASICs can achieve high performance and high integration but can be undesirable because they have relatively high design costs, have relatively long design cycles (the time it takes to transform a defined functionality into a mask), and relatively low predictability of integrating into an overall electronic system.
Another type of custom integrated circuit is referred to as application-specific standard parts (ASSPs), which are non-programmable integrated circuits that are designed for specific applications. These devices are typically purchased off-the-shelf from integrated circuit suppliers. ASSPs have predetermined architectures and input and output interfaces. They are typically designed for specific products and, therefore, have short product lifetimes.
Yet another type of custom integrated circuit is referred to as a software-only architecture. This type of custom integrated circuit uses a general-purpose processor and a high-level language compiler. The designer programs the desired functions with a high-level language. The compiler generates the machine code that instructs the processor to perform the desired functions. Software-only designs typically use general-purpose hardware to perform the desired functions and, therefore, have relatively poor performance because the hardware is not optimized to perform the desired functions.
A relatively new type of custom integrated circuit uses a configurable processor architecture. Configurable processor architectures allow a designer to rapidly add custom logic to a circuit. Configurable processor circuits have relatively high performance and provide rapid time-to-market. There are two major types of configurable processors circuits. One type of configurable processor circuit uses configurable Reduced Instruction-Set Computing (RISC) processor architectures. The other type of configurable processors circuit uses configurable Very Long Instruction Word (VLIW) processor architectures.
RISC processor architectures reduce the width of the instruction words to increase performance. Configurable RISC processor architectures provide the ability to introduce custom instructions into a RISC processor in order to accelerate common operations. Some configurable RISC processor circuits include custom logic for these operations that is added into the sequential data path of the processor. Configurable RISC processor circuits have a modest incremental improvement in performance relative to non-configurable RISC processors circuits.
The improved performance of configurable RISC processor circuits relative to ASIC circuits is achieved by converting operations that take multiple RISC instructions to execute and reducing them to a single operation. However, the incremental performance improvements achieved with configurable RISC processor circuits are far less than that of custom circuits that use custom logic blocks to produce parallel data flow.
VLIW processor architectures increase the width of the instruction words to increase performance. Configurable VLIW processor architectures provide the ability to use parallel execution of operations. Configurable VLIW processor architectures are used in some state-of-the art Digital Signal Processing (DSP) circuits. These known configurable VLIW processor architectures are single processor architectures and typically require a relatively large amount of memory. The ability to add custom logic units in such configurable VLIW processor architectures is limited to adding custom logic units in predefined locations in the data path.
Known configurable VLIW processor architectures are difficult to support with high-level language compilers and difficult to design with known compilers. These compilers are relatively complex. Configurability is typically achieved by custom assembly language programming. Using assembly language programming is more difficult and time consuming and, therefore increases the time-to-market and the cost of goods using such processors.